package exercises.newcoder.solution;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * <a href="https://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4?tpId=13&tqId=1375406&ru=/ta/sql-quick-study&qru=/ta/sql-quick-study/question-ranking">
 * JZ52 正则表达式匹配</a>
 *
 * <p><span color="#87CEEB">描述:</span>
 * 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符，而'*'表示它前面的字符可以出现任意次（包含0次）。 在本题中，匹配是指字符串的所有字符匹配整个模式。例如，字符串"aaa"与模式"a.a"和"ab*ac*a"匹配，但是与"aa.a"和"ab*a"均不匹配
 * <p>
 * 数据范围：字符串长度 。
 * 要求：空间复杂度 ，时间复杂度
 * <p>
 * 提示：如果输入空字符串，则返回True
 *
 * @author or2
 * @date 2021年10月11日 时间: 7:42
 */
public class JZ52 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * @param str     string字符串
     * @param pattern string字符串
     * @return bool布尔型
     */
    public boolean match(String str, String pattern) {
        Pattern compile = Pattern.compile("^" + pattern + "$");
        Matcher matcher = compile.matcher(str);
        return matcher.find();
    }

    public static void main(String[] args) {
        JZ52 jz52 = new JZ52();
        String pattern = "a*a";
        String str = "aaa";
        System.out.println(jz52.match(str, pattern));
    }
}
